home *** CD-ROM | disk | FTP | other *** search
/ Leonardo the Inventor / Leonardo The Inventor (93026)(Broderbund)(Riverdeep)(2004).iso / LEOWINMV / DATABASE.DIR / 00109_Script_Generate AlphabetLineStarts < prev    next >
Text File  |  1996-03-28  |  4KB  |  124 lines

  1. -- --------------------------------------------------------------
  2. -- Handler generateBrowserAlphabetTopicStarts puts info into the field
  3. -- "AlphabetLineStarts" which contains the line in the browser
  4. -- that each letter in the alphabet begins.
  5.  
  6. on generateBrowserAlphabetTopicStarts numLinesPerTopic
  7.   if voidP(numLinesPerTopic) then
  8.     set numLinesPerTopic = 1
  9.   end if
  10.   
  11.   set browserTopics = field "browserTopics"
  12.   set numLines = the number of lines in browserTopics
  13.   set numTopics = (numLines - (numLines/numLinesPerTopic -1)) / numLinesPerTopic
  14.   
  15.   put EMPTY into field "AlphabetLineStarts" 
  16.   
  17.   set curLine = 1
  18.   set oldLetter = "a"
  19.   set startLine = 1
  20.   
  21.   -- go through the browser topics one by one
  22.   repeat while (curLine <= numLines)
  23.     set curTopic = line curLine of browserTopics
  24.     put curTopic
  25.     set curLetter = convertToLower(char 1 of curTopic)
  26.     
  27.     put "checking" && curLetter && "line" && curLine
  28.     
  29.     if (curTopic <> EMPTY) then
  30.       if (curLetter <> oldLetter) then
  31.         -- new letter
  32.         put "NEW LETTER:" && curLetter
  33.         put oldLetter & "," & startLine into line (charToNum(oldLetter) - 96) of field "AlphabetLineStarts"
  34.         set startLine = curLine
  35.         set oldLetter = curLetter 
  36.       end if -- new letter
  37.     end if -- curTopic <> EMPTY
  38.     
  39.     set curLine = getNextTopicStartLine(curLine, numLinesPerTopic) 
  40.     
  41.   end repeat -- going through the topics
  42.   put oldLetter & "," & startLine into line (charToNum(oldLetter) - 96) of field "AlphabetLineStarts"
  43. end 
  44.  
  45. -- --------------------------------------------------------------
  46. -- Handler getNextTopicStartLine
  47.  
  48. on getNextTopicStartLine curLine, numLinesPerTopic
  49.   if (numLinesPerTopic = 1) then -- no return between lines
  50.     return curLine + 1
  51.   else 
  52.     return curLine + numLinesPerTopic + 1 -- +1 for the RETURN
  53.   end if
  54. end
  55.  
  56. -- --------------------------------------------------------------
  57. -- Handler generateMediaAlphabetTopicStarts
  58.  
  59. on generateMediaAlphabetTopicStarts numLinesPerTopic
  60.   if voidP(numLinesPerTopic) then
  61.     set numLinesPerTopic = 1
  62.   end if
  63.   
  64.   set topics = field "mediaTopics"
  65.   set numLines = the number of lines in topics
  66.   set numTopics = (numLines - (numLines/numLinesPerTopic -1)) / numLinesPerTopic
  67.   
  68.   set curLine = 1
  69.   set oldLetter = "a"
  70.   set startLine = 1
  71.   
  72.   -- go through the topics one by one
  73.   repeat while (curLine <= numLines)
  74.     set curTopic = line curLine of topics
  75.     put curTopic
  76.     set curLetter = convertToLower(char 1 of curTopic)
  77.     
  78.     put "checking" && curLetter && "line" && curLine
  79.     
  80.     if (curTopic <> EMPTY) then
  81.       if (curLetter <> oldLetter) then
  82.         -- new letter
  83.         put "NEW LETTER:" && curLetter
  84.         put "," & startLine after line (charToNum(oldLetter) - 96) of field "AlphabetLineStarts"
  85.         set startLine = curLine
  86.         set oldLetter = curLetter 
  87.       end if -- new letter
  88.     end if -- curTopic <> EMPTY
  89.     
  90.     set curLine = getNextTopicStartLine(curLine, numLinesPerTopic) 
  91.     
  92.   end repeat -- going through the topics
  93.   put "," & startLine after line (charToNum(oldLetter) - 96) of field "AlphabetLineStarts"
  94. end
  95.  
  96. -- --------------------------------------------------------------
  97. -- Handler convertToLower returns the given letter in lowercase.
  98.  
  99. on convertToLower whichLetter
  100.   set numLowerA = charToNum("a")
  101.   set numCapA = charToNum("A")
  102.   set numWhichLetter = charToNum(whichLetter)
  103.   set difference = numLowerA - numCapA
  104.   
  105.   if (numWhichLetter >= numLowerA) then
  106.     return whichLetter
  107.   else
  108.     return numToChar(numWhichLetter + difference)
  109.   end if
  110. end
  111.  
  112. -- --------------------------------------------------------------
  113. -- Handler generateBrowerTopics generates the list of topics
  114. -- from the text cast members, 
  115. -- and puts them in the browser
  116.  
  117. on generateBrowserTopics firstCast, lastCast
  118.   put EMPTY into field "browserTopics"
  119.   repeat with i = firstCast to lastCast
  120.     set name = the name of cast i
  121.     set numWords = the number of words in name
  122.     put word 1 to numWords - 1 of name & RETURN after field "browserTopics"
  123.   end repeat
  124. end